package com.zeng.sys.filemd.servicemodule.service.serviceimpl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zeng.sys.filemd.servicemodule.entity.FileType;
import com.zeng.sys.filemd.servicemodule.mapper.FileTypeMapper;
import com.zeng.sys.filemd.servicemodule.service.FileTypeService;
import com.zeng.sys.filemd.servicemodule.vo.FileTypeVo;
import com.zeng.sys.filemd.servicemodule.wrapperImpl.FileTypeWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional(rollbackFor = Exception.class)
public class FileTypeServiceImpl extends ServiceImpl<FileTypeMapper, FileType> implements FileTypeService {

    @Autowired
    FileTypeMapper fileTypeMapper;

    private FileTypeWrapper fileTypeWrapper = new FileTypeWrapper();

    @Override
    public FileTypeVo addOne(FileTypeVo fileTypeVo) {
        FileType entity = fileTypeVo.convertToFileType();
        save(entity);
        return FileTypeVo.convertToFileTypeVo(entity);
    }

    @Override
    public FileTypeVo getOneByCode(String code) {
        return FileTypeVo.convertToFileTypeVo(getById(code));
    }

    @Override
    public Integer update(FileTypeVo fileTypeVo) {
        return this.fileTypeMapper.updateById(fileTypeVo.convertToFileType());
    }

    @Override
    public Integer delete(String code) {
        return this.fileTypeMapper.deleteById(code);
    }

    @Override
    public Integer batchDelete(List<String> codes) {
        return this.fileTypeMapper.deleteBatchIds(codes);
    }

    @Override
    public List<FileTypeVo> findPage(Page page, FileTypeVo fileTypeVo) {
        this.fileTypeMapper.selectPage(page, fileTypeWrapper.getWrapper(fileTypeVo));
        List<FileTypeVo> list = (List<FileTypeVo>)FileTypeVo.listFileTypeVo(page.getRecords());
        page.setRecords(null);
        return list;
    }

    @Override
    public Integer count(FileTypeVo fileTypeVo) {
        return this.fileTypeMapper.selectCount(fileTypeWrapper.getWrapper(fileTypeVo));
    }

    @Override
    public List<FileTypeVo> findAll(FileTypeVo fileTypeVo) {
        return FileTypeVo.listFileTypeVo(list(fileTypeWrapper.getWrapper(fileTypeVo)));
    }

    @Override
    public Integer saveBatch(List<FileTypeVo> fileTypeVos) {
        saveBatch(FileTypeVo.listFileType(fileTypeVos));
        return fileTypeVos.size();
    }

    @Override
    public boolean updateOrSaveBatch(List<FileTypeVo> fileTypeVos) {
        return saveOrUpdateBatch(FileTypeVo.listFileType(fileTypeVos));
    }

    @Override
    public boolean updateBatch(List<FileTypeVo> fileTypeVos) {
        return updateBatchById(FileTypeVo.listFileType(fileTypeVos));
    }


}
